1. Technical Field
The present invention generally relates to debugging of programs and, more particularly, to determining candidate expressions of programs that are likely causes of program errors.
2. Description of the Related Art
Computer programs frequently suffer from errors encountered upon receiving or processing an unexpected input. Previous approaches for fault localization have mostly relied on the notion of an anomaly, in which the focus of the solution is on determining the difference between a failing execution and previously observed passing executions. The basic idea is that a failing run has an anomalous behavior in some regard when compared to passing runs. For example, a common anomaly detection technique, Tarantula, operates by comparing the statement coverage of passing and failing runs. The anomaly in behavior may stem from executing statements that are rarely, if ever, executed by passing tests. Alternatively, the anomaly can stem from violating invariants that have been discovered to hold during passing executions.